home *** CD-ROM | disk | FTP | other *** search
- #!/sbin/runscript
- # Copyright 1999-2005 Gentoo Foundation
- # Distributed under the terms of the GNU General Public License v2
- # $Header: /var/cvsroot/gentoo-x86/sys-apps/pcmcia-cs/files/pcmcia-cs-3.2.8-init.d,v 1.2 2005/05/09 08:57:55 brix Exp $
-
- RUN=/var/run
- SCHEME_FILE=${RUN}/pcmcia-scheme
-
- depend() {
- use coldplug
- }
-
- cleanup() {
- while read SN CLASS MOD INST DEV EXTRA; do
- if [[ "${SN}" != "Socket" ]]; then
- /etc/pcmcia/${CLASS} stop ${DEV} 2> /dev/null
- fi
- done
- }
-
- pcmcia_probe() {
- /sbin/modprobe ${1} ${2} 2> /dev/null
- return ${?}
- }
-
- start() {
- local retval
-
- # Scheme is set for the /etc/pcmcia/shared script
- if [[ -n "${SCHEME}" ]]; then
- umask 022
- echo ${SCHEME} > ${SCHEME_FILE}
- else
- umask 022
- touch ${SCHEME_FILE}
- fi
-
- # clean up any old interfaces
- if [[ -r ${RUN}/stab ]]; then
- cat ${RUN}/stab | cleanup
- fi
-
- # if /var/lib/pcmcia exists (and sometimes it gets created
- # accidentally if you run pcmcia-cs apps without the proper
- # flags), then it will really confuse the process
- if [[ -d /var/lib/pcmcia ]]; then
- rm -rf /var/lib/pcmcia
- fi
-
- if [[ -e /proc/bus/pccard ]]; then
- einfo "PCMCIA support detected"
- else
- pcmcia_probe pcmcia_core ${CORE_OPTS}
- if [[ -n "${PCIC}" ]]; then
- if ! pcmcia_probe ${PCIC} ${PCIC_OPTS}; then
- ewarn "'modprobe ${PCIC}' failed"
- ewarn "Trying alternative PCIC driver: ${PCIC_ALT}"
- pcmcia_probe ${PCIC_ALT} ${PCIC_ALT_OPTS}
- fi
- fi
- pcmcia_probe ds
- fi
-
- ebegin "Starting pcmcia"
- start-stop-daemon --start --quiet --exec /sbin/cardmgr -- \
- -s ${RUN}/stab ${CARDMGR_OPTS}
- retval=${?}
-
- if [[ ${retval} -gt 0 ]]; then
- einfo "cardmgr failed to start. Make sure that you have PCMCIA"
- einfo "modules built or support compiled into the kernel"
- fi
-
- eend ${retval}
- }
-
- stop() {
- local retval
-
- ebegin "Stopping pcmcia"
-
- [[ -w ${SCHEME_FILE} ]] && rm -f ${SCHEME_FILE}
- start-stop-daemon --stop --quiet --pidfile /var/run/cardmgr.pid --retry 5
- retval=${?}
-
- if [[ -e /proc/modules && -n $(fgrep "ds " /proc/modules | head -n1 | cut -c1) ]]; then
- /sbin/rmmod ds 2> /dev/null
- /sbin/rmmod ${PCIC} 2> /dev/null
- /sbin/rmmod ${PCIC_ALT} 2> /dev/null
- /sbin/rmmod pcmcia 2> /dev/null
- /sbin/rmmod pcmcia_core 2> /dev/null
- fi
-
- eend ${retval}
- }
-
-